Disablovanie Bitmapy v MenuItem

Otázka od: Števlík Marián

11. 9. 2002 19:29

Hi all,
Do jedneho MenuItem z PopupMenu som do Property BitMap vlozil obrazok
Funguje to pekne (menu sa vykresluje i stymto obrazkom), ale ma to jednu
chybicku,
ked tu MenuItem zdisablujem, tak obrazok ostane stale ten isty (neprejavi sa
nad nim to zasednutie) Vie mi niekto poradit ako to urobit? (napr niekde
OnDrawItem)

Stevlik Marian
Software Development Specialist
MERLIN
Stefanikova 32
150 00 Prague 5
Czech Republic
e-mail: marian.stevlik@merlin.cz
tel: +420 2 41010111 (181)
ICQ: 38493645

Odpovedá: Petr Vones

12. 9. 2002 6:08

From: "Števlík Marián" <Marian.Stevlik@merlin.cz>
> Do jedneho MenuItem z PopupMenu som do Property BitMap vlozil obrazok

Doporucoval bych striktne pouzivat actionlisty, tedy obrazky v TImageListu
linkovane do jednotlivych action v TActionListu.

Petr Vones

Odpovedá: Števlík Marián

12. 9. 2002 10:41

Ja by som bol tiez rad, kebyze to takto mozem vyuzit, ale mam takyto problem
Mam HostAplikaciu, a nejake dllka, kt. sa spravaju ako pluginy
Ide o to, ze v MainForme host aplikacie mam MainMenu a to ma MenuItem
operace, v kt. by sa mala zobrazovat ponuka akcii aktivneho okna
Mam fciu, kt dva vstupne parametre su typu TmenuItem a tam pri vytvori kopiu
z PopupMenu do menuitem kt. jej urcim, no ale je problem co stymi obrazkami
Kedze MainMenu v HostApp ma svoj ImageList a moj formular ma svoj ImageList,
t.j. nemozem natvrdo nastavit ImageIndex kedze mi bude ukazovat do ineho
ImageListu
Takze som sa stym hral a zistil som ze MenuItem ma propertu BitMap, do kt.
som ten obrazok vlozil, ale vznikol mi ten problem, o kt. som tu uz pisal


Stevlik Marian
Software Development Specialist
MERLIN
Stefanikova 32
150 00 Prague 5
Czech Republic
e-mail: marian.stevlik@merlin.cz
tel: +420 2 41010111 (181)
ICQ: 38493645

-----Původní zpráva-----
Od: Petr Vones [mailto:pvones@mbox.vol.cz]
Odesláno: 12. září 2002 2:20
Komu: delphi-l@clexpert.cz
Předmět: Re: Disablovanie Bitmapy v MenuItem


From: "Števlík Marián" <Marian.Stevlik@merlin.cz>
> Do jedneho MenuItem z PopupMenu som do Property BitMap vlozil obrazok

Doporucoval bych striktne pouzivat actionlisty, tedy obrazky v TImageListu
linkovane do jednotlivych action v TActionListu.

Petr Vones

Odpovedá: Jan Sebelík

13. 9. 2002 6:09

> Odesílatel: Števlík Marián <Marian.Stevlik@merlin.cz>
> Do jedneho MenuItem z PopupMenu som do Property BitMap vlozil obrazok
> ked tu MenuItem zdisablujem, tak obrazok ostane stale ten isty (neprejavi sa
> nad nim to zasednutie)

Pouzity postup je mozny, ale jednak je zbytecne pracny, jednak nemusi byt uplne
konzistentni.

Pouzij TActionList, do nej pridej akce (TAction).
TAction ma property Caption, ShortCut, Enabled, ...
Vlastni akce se programuje OnExecute.

Pokud si vedle TActionListu polozis TImageList, muzes pomoci TAction.ImageIndex
akci priradit obrazek.

No a pak uz u TButton, TBitBtn, TToolButton, TMenuItem, ... pouze nastavis
property Action a je to. Vsechny vlastnosti akce "zdedi" ovladaci prvek.
Funguje to spolehlive vcetne disablovani grafiky.

Navic:
Napr. Enabled se ovlada "centralne" v ramci TAction.
Nastavim-li Action.Enabled=false, automaticky se disabluji vsechny ovladaci
prvky, ktere jsou na akci pripojeny.

Pri programovani akci tedy jeste nemusim premyslet, jake dam uzivateli nastroje
pro jejich spousteni.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================